#pragma once

#include <string>
#include <memory>
#include <boost//smart_ptr/shared_ptr.hpp>
#include <TrueText/TextBounds.h>

namespace TrueText {

struct AtlasMetrics;
class BitmapInfo;
class Font;

class Atlas
{
public:
	Atlas(const Font& font);
	~Atlas();

	const std::wstring& GetString() const;
	void SetString(const std::wstring& value);

	int GetClipWidth() const;
	void SetClipWidth(int value);

	void Render(const BitmapInfo& output);

    const TextBounds& GetBounds();
	boost::shared_ptr<AtlasMetrics> GetMetrics();
private:
	std::auto_ptr<struct AtlasImpl> impl;
};

} // namespace TrueText